package com.erdos.core.util.service;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import javax.swing.table.TableModel;

import org.apache.poi.hssf.util.Region;

public interface ExcelService {
	/**
	 * 
	 * @param formatStream
	 *              模板输入流
	 * @param outStream
	 *              输出流
	 * @param sheetNames
	 *              sheet名字数组
	 * @param tables
	 *              excel数据
	 */
	public void write(InputStream formatStream, OutputStream outStream,
			String[] sheetNames, TableModel[] tables);

	/**
	 * 
	 * @param formatStream
	 *              模板输入流
	 * @param outStream
	 *              输出流
	 * @param sheetNames
	 *              sheet名字数组
	 * @param tables
	 *              excel数据
	 * @param removeUnusedSheets
	 *              是否删除不用的sheet
	 * @param groupRowNum
	 *              汇总行
	 */             
	public void write(InputStream formatStream, OutputStream outStream,
			String[] sheetNames, TableModel[] tables,
			boolean removeUnusedSheets, int groupRowNum);

	/**
	 * 
	 * @param formatStream
	 *              模板输入流
	 * @param outStream
	 *              输出流
	 * @param sheetNames
	 *              sheet名字数组
	 * @param tables
	 *              excel数据
	 * @param groupRowNum
	 *              汇总行
	 */
	public void write(InputStream formatStream, OutputStream outStream,
			String[] sheetNames, TableModel[] tables, int groupRowNum);

	/**
	 * 
	 * @param formatStream
	 *              模板输入流
	 * @param outStream
	 *              输出流
	 * @param sheetNames
	 *              sheet名字数组
	 * @param tables
	 *              excel数据
	 * @param regions
	 *              合并的区域List
	 * @param removeUnusedSheets
	 *              是否删除不用的sheet
	 * @param groupRowNum
	 *              汇总行
	 */
	public void write(InputStream formatStream, OutputStream outStream,
			String[] sheetNames, TableModel[] tables, List<Region>[] regions,
			boolean removeUnusedSheets, int groupRowNum);

	/**
	 * 
	 * @param formatStream、
	 *              模板输入流
	 * @param outStream
	 *              输出流
	 * @param sheetNames
	 *              sheet名字数组
	 * @param tables
	 *              excel数据
	 * @param regions
	 *              合并的区域List
	 * @param styleTable
	 *              样式数据
	 * @param removeUnusedSheets
	 *              是否删除不用的sheet
	 * @param groupRowNum
	 *              汇总行
	 */
	public void write(InputStream formatStream, OutputStream outStream,
			String[] sheetNames, TableModel[] tables, List<Region>[] regions,
			TableModel[] styleTable, boolean removeUnusedSheets, int groupRowNum);

	/**
	 * 
	 * @param formatStream
	 *              模板输入流
	 * @param outStream
	 *              输出流
	 * @param sheetNames
	 *              sheet名字数组
	 * @param tables
	 *              excel数据
	 * @param regions
	 *              合并的区域List
	 * @param styleTable
	 *              样式数据
	 * @param removeUnusedSheets
	 *              是否删除不用的sheet
	 * @param groupRowNum
	 *              汇总行
	 * @param imageSheets
	 *              插入图片
	 */
	public void write(InputStream formatStream, OutputStream outStream,
			String[] sheetNames, TableModel[] tables, List<Region>[] regions,
			TableModel[] styleTable, boolean removeUnusedSheets,
			int groupRowNum, Map<String, ByteArrayOutputStream> imageSheets);

	/**
	 * 
	 * @param inputStream
	 *              输入流
	 * @param sheetName
	 *              sheet名字
	 * @return
	 */
	public TableModel read(InputStream inputStream, String sheetName);

	/**
	 * 
	 * @param fileName
	 *              输入名字
	 * @param sheetName
	 *              sheet名字
	 * @return
	 */
	//public TableModel read(String fileName, String sheetName);
}
